package fileoperation

import (
	"bufio"
	"encoding/json"
	"fmt"
	"io"
	"io/ioutil"
	"os"
)

//读取文件的内容并显示在终端（带缓冲区的方式），使用os.Open,file.Close,bufio.NewReader()
//reader.ReadString
func Test2()  {
	file,err:=os.Open("C:\\Users\\wangjiahao\\Desktop\\每日计划\\2022-5-09.txt")
	if err!=nil{
		fmt.Println("open file err=",err)
	}
	//当函数退出时，及时关闭file
	defer file.Close()
	//创建一个*Reader，带缓冲的
	reader:=bufio.NewReader(file)
	//循环读取文件的内容
	for{
		str,err:=reader.ReadString('\n')
		if err==io.EOF{//io.EOF表示到文件的末尾
			break
		}
		//输出内容
		fmt.Println(str)
	}
	fmt.Println("文件读取结束")

	//读取文件的内容并显示在终端（使用ioutil依次将整个文件读入到内存中）这种方式适用于文件不大的情况
	//相关方法（ioutil.ReadFile)
	content,err:=ioutil.ReadFile("C:\\Users\\wangjiahao\\Desktop\\每日计划\\2022-5-09.txt")
	if err!=nil{
		fmt.Println("read file err=",err)
	}
	//把读取的内容显示到终端[]byte
	fmt.Println(string(content))
	//我们在这里没有显示的Open文件，因此也不需要显示的Close文件，因为Open和Close都被封装到ReadFile函数内部
	json.NewDecoder(file)
}
